一、题目大意给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[]提示:链表中节点的数目范围是[0,5000]-5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode.cn/problems/reverse-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。二、解题思路用迭代和递归来实现,迭代思路
一、题目大意给定一个包含大写字母和小写字母的字符串s,返回通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。示例1:输入:s="abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd",它的长度是7。示例2:输入:s="a"输入:1提示:1s只由小写和/或大写英文字母组成来源:力扣(LeetCode)链接:https://leetcode.cn/problems/longest-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。二、解题思路思路:先统计每个字符出现的次数,再遍历统计后
题目(链接)arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入:arr=[5,4,3,2,1]输出:1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成[5,4],[3,2,1]的结果是[4,5,1,2,3],这不是有序的数组。示例2:输入:arr=[2,1,3,4,4]输出:4解释:我们可以把它分成两块,例如[2,1],[3,4,4]。然而,分成[2,1],[3],[4],[4]可以得到最多的块数。注意:arr的长度在[1,2000]
一、题目大意实现strStr()函数。给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串出现的第一个位置(下标从0开始)。如果不存在,则返回-1。说明:当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当needle是空字符串时我们应当返回0。这与C语言的strstr()以及Java的indexOf()定义相符。示例1:输入:haystack="hello",needle="ll"输出:2示例2:输入:haystack="aaaaa",needle="bba"输出:-1提示:1haystack和needl
一、题目大意存在一个无向图,图中有n个节点。其中每个节点都有一个介于0到n-1之间的唯一编号。给你一个二维数组graph,其中graph[u]是一个节点数组,由节点u的邻接节点组成。形式上,对于graph[u]中的每个v,都存在一条位于节点u和节点v之间的无向边。该无向图同时具有以下属性:不存在自环(graph[u]不包含u)。不存在平行边(graph[u]不包含重复值)。如果v在graph[u]内,那么u也应该在graph[v]内(该图是无向图)这个图可能不是连通图,也就是说两个节点u和v之间可能不存在一条连通彼此的路径。二分图定义:如果能将一个图的节点集合分割成两个独立的子集A和B,并使图
一、题目大意存在一个无向图,图中有n个节点。其中每个节点都有一个介于0到n-1之间的唯一编号。给你一个二维数组graph,其中graph[u]是一个节点数组,由节点u的邻接节点组成。形式上,对于graph[u]中的每个v,都存在一条位于节点u和节点v之间的无向边。该无向图同时具有以下属性:不存在自环(graph[u]不包含u)。不存在平行边(graph[u]不包含重复值)。如果v在graph[u]内,那么u也应该在graph[v]内(该图是无向图)这个图可能不是连通图,也就是说两个节点u和v之间可能不存在一条连通彼此的路径。二分图定义:如果能将一个图的节点集合分割成两个独立的子集A和B,并使图
一、题目大意给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”示例1:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=1输出:3解释:节点5和节点1的最近公共祖先是节点3。示例2:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=4输出:5解释:节点5和节点4的最近公共祖先是节点5。因为根据定义最近公共祖先节点可以为节点本身。示例3:输入:root
一、题目大意给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”示例1:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=1输出:3解释:节点5和节点1的最近公共祖先是节点3。示例2:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=4输出:5解释:节点5和节点4的最近公共祖先是节点5。因为根据定义最近公共祖先节点可以为节点本身。示例3:输入:root
1.题目一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径? 示例1:输入:m=3,n=7输出:28示例2:输入:m=3,n=2输出:3解释:从左上角开始,总共有3条路径可以到达右下角。1.向右->向下->向下2.向下->向下->向右3.向下->向右->向下示例3:输入:m=7,n=3输出:28示例4:输入:m=3,n=3输出:6 提示:1题目数据保证答案小于等于 2*1092.题目分析 这是一个二维的动态规划,与一维动态规划类似,二维状态是
1.题目给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。 示例1:输入:nums=[2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是2。 从下标为0跳到下标为1的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例2:输入:nums=[2,3,0,1,4]输出:2 提示:1402.题目分析 这是一道动态规划的题目,思路求解和跳跃游戏1类似,只不过现在题目假设从起点都能到终点,找从起点到终点的最小跳数。 设dp[i]